最近常常發生時間有限的資源分配問題,遇到補班日上班就更需要提振精神QQ
Let's play Fight Song by Rachel Platten,跟自己說:我、可、以!
如 Day 8 主題,當我們使用 Spring Initializr 或 Spring Boot CLI 生成一個新的 Spring Boot 項目時,會發現 Spring Boot 有一個很具結構性的目錄布局,這個目錄結構能更加方便的讓大家理解和擴展應用程式。
接下來將深入探討這個結構,以及為何這樣設計~
java
這是項目的主要 source code 目錄。所有的 Java 文件都應該放在這裡。一般來說,應用程式入口點(帶有 @SpringBootApplication
註解的 class) 會放在這個路徑下。
package com.meowmeow.ithomexdemo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class IthomexdemoApplication {
public static void main(String[] args) {
SpringApplication.run(IthomexdemoApplication.class, args);
}
}
resources
這個目錄存放所有的資源文件,如配置文件、圖片、前端文件等。
application.properties
或 application.yml
:這是 Spring Boot 的主要配置文件。我們可以在這裡定義許多關於應用程式的設置:
# 伺服器埠號設定
server:
port: 8080
# 資料庫設定
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: dbusername
password: dbpassword
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
hibernate:
# 資料庫結構自動更新設定
ddl-auto: update
# 是否顯示 SQL 語句
show-sql: true
properties:
hibernate:
# 使用的 Hibernate 方言
dialect: org.hibernate.dialect.MySQL5Dialect
logging:
level:
root: WARN
org.springframework.web: DEBUG
com.mycompany: TRACE
# 啟用的配置檔
profiles:
active: dev
# OAuth2安全性設定
security:
oauth2:
client:
registration:
myclient:
client-id: myClientId
client-secret: myClientSecret
static
:存放所有靜態資源,如 HTML、CSS、JavaScript 文件等。例如,可能會有一個作為主頁的 index.html
。
templates
:存放模板引擎(如 Thymeleaf 或 FreeMarker)的模板文件。當你的應用程式需要動態生成 HTML 內容時(which means 前後端不分離的你儂我儂),將模板放在這個路徑下即可。
就只是偷渡一張有貓貓的 meme (ㄟ
test
/java 和 src/test
/resources這兩個是測試程式碼和測試資源的目錄。使用 JUnit 和其他測試工具(例如 TestContainers),你可以撰寫單元測試或整合測試。
package com.meowmeow.ithomexdemo;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class IthomexdemoApplicationTests {
@Test
void contextLoads() {
}
}
依據構建工具不同,使用 Maven 專案會使用 pom.xml
,而對於 Gradle 來說會使用 build.gradle
。這些文件用來定義項目的構建和管理 dependency 資訊。
如果使用 git 作為版本控制,.gitignore
文件是在告訴 git 忽略某些文件或目錄,請務必記得不應該被版控的內容都一定要放進 .gitignore 中
README.md
: Markdown 文件,用來說明這個專案的一切,如何構建、如何運行、用了哪些技術。一個好的專案也要搭配完整的說明文件,才能讓大家清楚專案的 details,如何撰寫 README 是很重要的議題!Dockerfile
:使用 Docker 容器化,Dockerfile
定義如何建立你的 Docker 的 imageSpring Boot 的目錄結構讓開發人員能夠迅速理解專案的布局和功能。比如說,只要看一下 src/main/java
就可以知道這是主要的業務邏輯所在。
另外,這種結構也有助於工具和插件的整合,同時也使得 CI/CD 自動化工具能更容易與專案配合。
Spring Boot 的項目結構是經過精心設計的,旨在提供一個清晰、一致和功能豐富的開發體驗。無論是新手 like me 還是一個有經驗的開發人員,清楚了解這個結構可以幫助我們快速的開發 Spring Boot 應用程式!